package handler

import (
	v1 "gin-vben-admin/api/v1"
	"gin-vben-admin/api/v1/errcode"
	"gin-vben-admin/internal/service"
	"github.com/gin-gonic/gin"
	"strconv"
)

type SysDeptHandler struct {
	*Handler
	sysDeptService service.SysDeptService
}

func NewSysDeptHandler(handler *Handler, sysDeptService service.SysDeptService) *SysDeptHandler {
	return &SysDeptHandler{
		Handler:        handler,
		sysDeptService: sysDeptService,
	}
}

func (h *SysDeptHandler) GetTreeList(ctx *gin.Context) {
	var req v1.SysDeptListReq
	if err := ctx.ShouldBind(&req); err != nil {
		v1.Error(ctx, err)
		return
	}
	data, err := h.sysDeptService.GetTreeListByPid(ctx, req.DeptId)
	v1.Response(ctx, err, data)
}

//
//func (h *SysDeptHandler) Detail(ctx *gin.Context) {
//	_id := ctx.Param("id")
//	id, err := strconv.ParseInt(_id, 10, 64)
//	if err != nil {
//		v1.Error(ctx, errcode.ErrBadRequest)
//		return
//	}
//	data, err := h.sysMenuService.Detail(ctx, id)
//	v1.Response(ctx, err, data)
//}

func (h *SysDeptHandler) Create(ctx *gin.Context) {
	var req = v1.SysDeptCreateReq{AuthId: UserId(ctx)}
	if err := ctx.ShouldBindJSON(&req); err != nil {
		v1.Error(ctx, err)
		return
	}
	v1.Response(ctx, h.sysDeptService.Create(ctx, &req), nil)
}

func (h *SysDeptHandler) Update(ctx *gin.Context) {
	var req = v1.SysDeptUpdateReq{AuthId: UserId(ctx)}
	if err := ctx.ShouldBindJSON(&req); err != nil {
		v1.Error(ctx, err)
		return
	}
	v1.Response(ctx, h.sysDeptService.Update(ctx, &req), nil)
}

func (h *SysDeptHandler) Delete(ctx *gin.Context) {
	_id := ctx.Param("id")
	id, err := strconv.ParseInt(_id, 10, 64)
	if err != nil {
		v1.Error(ctx, errcode.ErrBadRequest)
		return
	}
	v1.Response(ctx, h.sysDeptService.Delete(ctx, id), nil)
}
